home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / nss / pkit.h < prev    next >
C/C++ Source or Header  |  2006-04-20  |  6KB  |  220 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is the Netscape security libraries.
  15.  *
  16.  * The Initial Developer of the Original Code is
  17.  * Netscape Communications Corporation.
  18.  * Portions created by the Initial Developer are Copyright (C) 1994-2000
  19.  * the Initial Developer. All Rights Reserved.
  20.  *
  21.  * Contributor(s):
  22.  *
  23.  * Alternatively, the contents of this file may be used under the terms of
  24.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  25.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  26.  * in which case the provisions of the GPL or the LGPL are applicable instead
  27.  * of those above. If you wish to allow use of your version of this file only
  28.  * under the terms of either the GPL or the LGPL, and not to allow others to
  29.  * use your version of this file under the terms of the MPL, indicate your
  30.  * decision by deleting the provisions above and replace them with the notice
  31.  * and other provisions required by the GPL or the LGPL. If you do not delete
  32.  * the provisions above, a recipient may use your version of this file under
  33.  * the terms of any one of the MPL, the GPL or the LGPL.
  34.  *
  35.  * ***** END LICENSE BLOCK ***** */
  36.  
  37. #ifndef PKIT_H
  38. #define PKIT_H
  39.  
  40. #ifdef DEBUG
  41. static const char PKIT_CVS_ID[] = "@(#) $RCSfile: pkit.h,v $ $Revision: 1.17 $ $Date: 2005/01/20 02:25:49 $";
  42. #endif /* DEBUG */
  43.  
  44. /*
  45.  * pkit.h
  46.  *
  47.  * This file contains definitions for the types of the top-level PKI objects.
  48.  */
  49.  
  50. #ifndef NSSBASET_H
  51. #include "nssbaset.h"
  52. #endif /* NSSBASET_H */
  53.  
  54. #ifndef BASET_H
  55. #include "baset.h"
  56. #endif /* BASET_H */
  57.  
  58. #ifdef NSS_3_4_CODE
  59. #include "certt.h"
  60. #include "pkcs11t.h"
  61. #endif /* NSS_3_4_CODE */
  62.  
  63. #ifndef NSSPKIT_H
  64. #include "nsspkit.h"
  65. #endif /* NSSPKIT_H */
  66.  
  67. #ifndef NSSDEVT_H
  68. #include "nssdevt.h"
  69. #endif /* NSSDEVT_H */
  70.  
  71. #ifndef DEVT_H
  72. #include "devt.h"
  73. #endif /* DEVT_H */
  74.  
  75. #ifndef nssrwlkt_h__
  76. #include "nssrwlkt.h"
  77. #endif /* nssrwlkt_h__ */
  78.  
  79. PR_BEGIN_EXTERN_C
  80.  
  81. /*
  82.  * A note on ephemeral certs
  83.  *
  84.  * The key objects defined here can only be created on tokens, and can only
  85.  * exist on tokens.  Therefore, any instance of a key object must have
  86.  * a corresponding cryptoki instance.  OTOH, certificates created in 
  87.  * crypto contexts need not be stored as session objects on the token.
  88.  * There are good performance reasons for not doing so.  The certificate
  89.  * and trust objects have been defined with a cryptoContext field to
  90.  * allow for ephemeral certs, which may have a single instance in a crypto
  91.  * context along with any number (including zero) of cryptoki instances.
  92.  * Since contexts may not share objects, there can be only one context
  93.  * for each object.
  94.  */
  95.  
  96. /* nssPKIObject
  97.  *
  98.  * This is the base object class, common to all PKI objects defined in
  99.  * nsspkit.h
  100.  */
  101. struct nssPKIObjectStr 
  102. {
  103.     /* The arena for all object memory */
  104.     NSSArena *arena;
  105.     /* Atomically incremented/decremented reference counting */
  106.     PRInt32 refCount;
  107.     /* lock protects the array of nssCryptokiInstance's of the object */
  108.     PZLock *lock;
  109.     /* XXX with LRU cache, this cannot be guaranteed up-to-date.  It cannot
  110.      * be compared against the update level of the trust domain, since it is
  111.      * also affected by import/export.  Where is this array needed?
  112.      */
  113.     nssCryptokiObject **instances;
  114.     PRUint32 numInstances;
  115.     /* The object must live in a trust domain */
  116.     NSSTrustDomain *trustDomain;
  117.     /* The object may live in a crypto context */
  118.     NSSCryptoContext *cryptoContext;
  119.     /* XXX added so temp certs can have nickname, think more ... */
  120.     NSSUTF8 *tempName;
  121. };
  122.  
  123. typedef struct nssDecodedCertStr nssDecodedCert;
  124.  
  125. typedef struct nssCertificateStoreStr nssCertificateStore;
  126.  
  127. /* How wide is the scope of this? */
  128. typedef struct nssSMIMEProfileStr nssSMIMEProfile;
  129.  
  130. typedef struct nssPKIObjectStr nssPKIObject;
  131.  
  132. struct NSSTrustStr 
  133. {
  134.     nssPKIObject object;
  135.     NSSCertificate *certificate;
  136.     nssTrustLevel serverAuth;
  137.     nssTrustLevel clientAuth;
  138.     nssTrustLevel emailProtection;
  139.     nssTrustLevel codeSigning;
  140.     PRBool stepUpApproved;
  141. };
  142.  
  143. struct nssSMIMEProfileStr
  144. {
  145.     nssPKIObject object;
  146.     NSSCertificate *certificate;
  147.     NSSASCII7 *email;
  148.     NSSDER *subject;
  149.     NSSItem *profileTime;
  150.     NSSItem *profileData;
  151. };
  152.  
  153. struct NSSCertificateStr
  154. {
  155.     nssPKIObject object;
  156.     NSSCertificateType type;
  157.     NSSItem id;
  158.     NSSBER encoding;
  159.     NSSDER issuer;
  160.     NSSDER subject;
  161.     NSSDER serial;
  162.     NSSASCII7 *email;
  163.     nssDecodedCert *decoding;
  164. };
  165.  
  166. struct NSSPrivateKeyStr;
  167.  
  168. struct NSSPublicKeyStr;
  169.  
  170. struct NSSSymmetricKeyStr;
  171.  
  172. typedef struct nssTDCertificateCacheStr nssTDCertificateCache;
  173.  
  174. struct NSSTrustDomainStr {
  175.     PRInt32 refCount;
  176.     NSSArena *arena;
  177.     NSSCallback *defaultCallback;
  178.     nssList *tokenList;
  179.     nssListIterator *tokens;
  180.     nssTDCertificateCache *cache;
  181.     NSSRWLock *tokensLock;
  182. #ifdef NSS_3_4_CODE
  183.     void *spkDigestInfo;
  184.     CERTStatusConfig *statusConfig;
  185. #endif
  186. };
  187.  
  188. struct NSSCryptoContextStr
  189. {
  190.     PRInt32 refCount;
  191.     NSSArena *arena;
  192.     NSSTrustDomain *td;
  193.     NSSToken *token;
  194.     nssSession *session;
  195.     nssCertificateStore *certStore;
  196. };
  197.  
  198. struct NSSTimeStr {
  199.     PRTime prTime;
  200. };
  201.  
  202. struct NSSCRLStr {
  203.   nssPKIObject object;
  204.   NSSDER encoding;
  205.   NSSUTF8 *url;
  206.   PRBool isKRL;
  207. };
  208.  
  209. typedef struct NSSCRLStr NSSCRL;
  210.  
  211. struct NSSPoliciesStr;
  212.  
  213. struct NSSAlgorithmAndParametersStr;
  214.  
  215. struct NSSPKIXCertificateStr;
  216.  
  217. PR_END_EXTERN_C
  218.  
  219. #endif /* PKIT_H */
  220.